/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package INTERFAZ;

import CONTROLES.ControlUsuario;
import MODELOS.Usuario;
import UTILITARIOS.Herramienta;
import UTILITARIOS.PanelPickFechas;
import UTILITARIOS.StringToDate;
import UTILITARIOS.UTextField;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Date;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;
import java.awt.Choice;
import java.awt.Frame;
import java.util.StringTokenizer;

/**
 *
 * @author Administrador
 */
public class EditarUsuario extends JDialog implements Propiedades {

    private JPanel titulo;
    private JPanel formulario;
    private JPanel botones;

    private int idUsuario;

    private JLabel lblIdEmpleado;
    private UTextField txtIdEmpleado;

    private JLabel lblNombreUsuario;
    private UTextField txtNombre;

    private JLabel lblContrasena;
    private JPasswordField txtContrasena;

    private JLabel lblConfContrasena;
    private JPasswordField txtConfContrasena;

    private JLabel lblTipoUsuario;
    private Choice txtTipoUsuario;

    private PanelPickFechas fechaCreado;

    private JLabel lblEstado;
    private JCheckBox chxEstado;

    private JButton btnAceptar;
    private JButton btnCancelar;
    



    public EditarUsuario()
    {
        
        //setAlwaysOnTop(true);
        setProperties();
        buildComponents();
        setPropertiesComponents();
        addComponents();
        addEvents();
        
    }

    public void setProperties() {
                setSize(600, 340);
                setLayout(new FlowLayout());
		setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
                setTitle("Edición de Usuario");
		setResizable(false);
    }

    public void buildComponents() {

        lblIdEmpleado = new JLabel("Empleado Asignado(*) :", JLabel.RIGHT);
        txtIdEmpleado = new UTextField();

        lblNombreUsuario = new JLabel("Nombre de Usuario(*) : ", JLabel.RIGHT );
        txtNombre = new UTextField();

        lblContrasena = new JLabel("Contraseña(*) : ", JLabel.RIGHT);
        txtContrasena = new JPasswordField();

        lblConfContrasena = new JLabel("Confirmar Contraseña(*) : ", JLabel.RIGHT );
        txtConfContrasena = new JPasswordField();

        lblTipoUsuario = new JLabel("Tipo de Usuario(*) : ", JLabel.RIGHT );
        txtTipoUsuario = new Choice();
        txtTipoUsuario.add("ADMINISTRADOR");
        txtTipoUsuario.add("SECRETARIA");
        txtTipoUsuario.add("CAJERO");
        
        fechaCreado = new PanelPickFechas("Fecha de Creación(*) : ");

        lblEstado = new JLabel("Habilitar Usuario(*) : ",JLabel.RIGHT);
        chxEstado = new JCheckBox("");

        titulo = new JPanel();
        formulario = new JPanel();
        botones = new JPanel();

        btnAceptar = new JButton("ACTUALIZAR");
        btnCancelar = new JButton("CANCELAR");
        
    }

    public void setPropertiesComponents() {
        
        
        formulario.setLayout(new FlowLayout());
        formulario.setPreferredSize(new Dimension(540,200));
        formulario.setBorder(BorderFactory.createTitledBorder(null,"DATOS DEL USUARIO",TitledBorder.CENTER , TitledBorder.DEFAULT_POSITION));
        botones.setPreferredSize(new Dimension(550, 75));
        
        botones.setBorder(BorderFactory.createTitledBorder(null,"ACCIONES",TitledBorder.CENTER , TitledBorder.DEFAULT_POSITION));

        Dimension dimLabel = new Dimension(150,20);
	Dimension dimText = new Dimension(270,20);
	Font fontLabel = new Font("Tahoma",Font.PLAIN,12);

                lblIdEmpleado.setPreferredSize(dimLabel);
                lblIdEmpleado.setFont(fontLabel);
                lblIdEmpleado.setForeground(Color.BLACK);
                txtIdEmpleado.setPreferredSize(dimText);
                txtIdEmpleado.setText(getTxtNombreEmp());
                txtIdEmpleado.setEnabled(false);

                lblNombreUsuario.setPreferredSize( dimLabel );
		lblNombreUsuario.setFont(fontLabel);
                lblNombreUsuario.setForeground(Color.BLACK);
		txtNombre.setPreferredSize( dimText );
		//txtNombre.setMandatory(true);

		lblContrasena.setPreferredSize(dimLabel);
		lblContrasena.setFont(fontLabel);
                 lblContrasena.setForeground(Color.BLACK);
		txtContrasena.setPreferredSize(dimText);
		//txtContrasena.setBackground(new Color(255, 255, 230));

		lblConfContrasena.setPreferredSize(dimLabel);
		lblConfContrasena.setFont(fontLabel);
                 lblConfContrasena.setForeground(Color.BLACK);
		txtConfContrasena.setPreferredSize(dimText);
		//txtConfContrasena.setBackground(new Color(255, 255, 230));

                lblTipoUsuario.setPreferredSize( dimLabel );
		lblTipoUsuario.setFont(fontLabel);
                lblTipoUsuario.setForeground(Color.BLACK);
		txtTipoUsuario.setPreferredSize( dimText );
		//txtTipoUsuario.setMandatory(true);

		fechaCreado.setPreferredSize(new Dimension(320,20));
		fechaCreado.setEnabled(false);

                lblEstado.setPreferredSize(new Dimension(250, 20));
                lblEstado.setFont(fontLabel);
                lblEstado.setForeground(Color.BLACK);
                chxEstado.setPreferredSize(new Dimension(100, 20));


		//botones.setPreferredSize( new Dimension(250,25) );
		
                

		botones.setOpaque(false);

		btnAceptar.setToolTipText("Actualizar el usuario");
                btnAceptar.setForeground(Color.BLACK);
		btnCancelar.setToolTipText("Cancelar la operación");
                 btnCancelar.setForeground(Color.BLACK);
                 
		btnAceptar.setMnemonic('a');
		btnCancelar.setMnemonic('c');
               System.out.println(Bienvenida.user.getTipoUsuario());
                if(Bienvenida.user.getTipoUsuario().equalsIgnoreCase("ADMINISTRADOR")){
                    chxEstado.setEnabled(true);
                    txtTipoUsuario.setEnabled(true);
                } else{
                    chxEstado.setEnabled(false);
                    txtTipoUsuario.setEnabled(false);
                }

    }




    public void addComponents() {
        

        formulario.add(lblIdEmpleado);
        formulario.add(txtIdEmpleado);

        formulario.add(lblNombreUsuario);
        formulario.add(txtNombre);

        formulario.add(lblContrasena);
        formulario.add(txtContrasena);

        formulario.add(lblConfContrasena);
        formulario.add(txtConfContrasena);

        formulario.add(lblTipoUsuario);
        formulario.add(txtTipoUsuario);

        formulario.add(fechaCreado);

        formulario.add(lblEstado);
        formulario.add(chxEstado);

        botones.add(btnAceptar);
        botones.add(btnCancelar);
        
        add(formulario);
        add(botones);
        

    }

    public void addEvents() {
       btnAceptar.addActionListener( new ActionListener(){
			public void actionPerformed(ActionEvent e) {
                           if(  vacio() == false && contIguales()==true ){
                               guardar();
                                JOptionPane.showMessageDialog(null, "El usuario ha sido Actualizado CORRECTAMENTE ", "Confirmación", JOptionPane.INFORMATION_MESSAGE);
                               borrarCampos();
                               dispose();
                              
                              
                           }
                           else{
                               JOptionPane.showMessageDialog(null, "Las contraseñas no coinciden o faltan campos por llenar", "Confirmación", JOptionPane.YES_OPTION);
                           }
			}


		});
                 btnCancelar.addActionListener( new ActionListener(){
			public void actionPerformed(ActionEvent e) {
				
                            dispose();
			}
		});

                 


               addWindowListener( new WindowAdapter(){
			@Override
			public void windowClosing(WindowEvent e) {
                            dispose();
                            //JOptionPane.showMessageDialog(null, "Seguro que quiere salir", "Adventencia", JOptionPane.OK_OPTION);
                                //System.exit(0);
                        }
		});
    }

    private void borrarCampos() {
               setTxtNombre("");
               setTxtConfContrasena("");
               setTxtTipoUsuario("");
               setChxEstado(false);
               setTxtContrasena("");

            }

    public String getFechaCreado() {
      
        return fechaCreado.getDateText();
    }

    public void setFechaCreado(String fechaCreado) {
        this.fechaCreado.setDate(fechaCreado);
    }

     public String getTxtContrasena() {
         
        return txtContrasena.getText();
    }

    public void setTxtContrasena(String txtContrasena) {
        this.txtContrasena.setText(txtContrasena);
    }


    public String getTxtConfContrasena() {
        
        return txtConfContrasena.getText();
    }

    public void setTxtConfContrasena(String txtConfContrasena) {
        this.txtConfContrasena.setText(txtConfContrasena);
    }

   
    public String getTxtNombre() {
        
        return txtNombre.getText();
    }

    public void setTxtNombre(String txtNombre) {
        this.txtNombre.setText(txtNombre);
    }

    public String getTxtTipoUsuario() {
        
        return txtTipoUsuario.getSelectedItem();
    }

    public void setTxtTipoUsuario(String txtTipoUsuario) {
        this.txtTipoUsuario.select(txtTipoUsuario);
    }


    public boolean getChxEstado() {
        boolean estado;
        return estado=chxEstado.isSelected();
    }

    public void setChxEstado(boolean chxEstado) {
        this.chxEstado.setSelected(chxEstado);
    }

    public String getTxtNombreEmp() {
        
        return txtIdEmpleado.getText();
    }

    public void setTxtNombreEmp(String txtNombre) {
        this.txtIdEmpleado.setText(txtNombre);
    }

    public int getIdUsuario() {
        return idUsuario;
    }

    public void setIdUsuario(int idUsuario) {
        this.idUsuario = idUsuario;
    }

    


    public boolean contIguales()
    {
        boolean res= false;
        String contrasena = getTxtContrasena();
        String confContra = getTxtConfContrasena();

        if(contrasena.equalsIgnoreCase(confContra))
            res=true;
        else res=false;


        return res;
    }

    public boolean vacio()
    {
        boolean res=false;
        if(getFechaCreado().isEmpty() || getTxtConfContrasena().isEmpty() || getTxtContrasena().isEmpty() || getTxtTipoUsuario().isEmpty() || getTxtNombre().isEmpty() || getTxtNombreEmp().isEmpty())
        {
            res = true;
        }
    else{
            res = false;
    }
        return res;
    }

    public void guardar()
    {
                            StringToDate conv = new StringToDate();
                            ControlUsuario usu = new ControlUsuario();
                            Usuario u = new Usuario();

                            String prueba = getTxtNombreEmp();
                            StringTokenizer i = new StringTokenizer(prueba,"-");
                            int id = Integer.parseInt(i.nextToken());
                            
                            if(usu.esUsuario(id)){
                            String fechaCreacion = getFechaCreado();
                            Date fechaC = conv.convertir(fechaCreacion);
                            u.setIdUsuario(getIdUsuario());
                            u.setIdEmpleado(id);
                            u.setNombreUsuario(getTxtNombre());
                            u.setContrasena(getTxtContrasena());
                            u.setTipoUsuario(getTxtTipoUsuario());
                            u.setFechaCreacion(fechaC);
                            u.setEstado(getChxEstado());
                             usu.actualizarUsuario(u);
                            System.out.println("tipo usuario ertetsetee" +u.getIdUsuario());
                            System.out.println("tipo usuario " +id);
                            System.out.println("tipo usuario " +u.getContrasena());
                            System.out.println("tipo usuario " +u.getFechaCreacion());
                          



                           
        }else
            System.out.println("error al actualizar el usuario");

    }



   

    public static void main(String args[])
    {
        FormUsuario n = new FormUsuario();
        n.setTxtNombreEmp("2 hola");
        n.setVisible(true);
         
    }


}
